# Copyright 2020 - 2022 MONAI Consortium
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#     http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import torch
from torch.nn.functional import normalize
import numpy as np


class Loss(torch.nn.Module):
    def __init__(self, args):
        super().__init__()
        self.recon_loss = torch.nn.MSELoss().cuda()
        self.weight = [0.25, 0.5, 0.75, 1]

    def __call__(self, rec, gt):
        loss = []
        for rec_, gt_ in zip(rec, gt):
            loss.append(self.recon_loss(rec_, gt_))

        total_loss = 0.

        for i, weight in enumerate(self.weight):
            total_loss += weight * loss[i]

        return total_loss, loss


if __name__ == '__main__':
    pass